package com.autumn.zero.workflow.application.services;

import java.util.List;

import org.apache.poi.ss.usermodel.Workbook;

import com.autumn.application.service.IApplicationService;
import com.autumn.common.api.application.dto.input.IAdvancedPageQueryInput;
import com.autumn.common.api.application.dto.input.IAdvancedQueryInput;
import com.autumn.common.api.application.dto.output.IPageQueryResult;
import com.autumn.zero.workflow.application.dto.WorkflowImageInput;
import com.autumn.zero.workflow.application.dto.WorkflowImageOutput;
import com.autumn.zero.workflow.application.dto.user.task.UserTaskCompleteInput;
import com.autumn.zero.workflow.application.dto.user.task.WorkflowUserTaskCompleteOutput;
import com.autumn.zero.workflow.application.dto.user.task.WorkflowUserTaskDto;

/**
 * 工作流用户任务应用服务
 * 
 * @author 杨昌国 2019-02-20 18:12:02
 */
public interface IWorkflowUserTaskAppService extends IApplicationService {

	/**
	 * 待办任务分页查询
	 * 
	 * @param input 输入
	 * @return
	 */
	IPageQueryResult<WorkflowUserTaskDto> queryTaskWaitByPageList(IAdvancedPageQueryInput input);

	/**
	 * 待办任务 Excel 导出
	 * 
	 * @param input 输入
	 * @return
	 */
	Workbook exportTaskWaitByExcel(IAdvancedQueryInput input);

	/**
	 * 已办任务分页查询
	 * 
	 * @param input 输入
	 * @return
	 */
	IPageQueryResult<WorkflowUserTaskCompleteOutput> queryTaskCompleteByPageList(IAdvancedPageQueryInput input);

	/**
	 * 已办任务 Excel 导出
	 * 
	 * @param input 输入
	 * @return
	 */
	Workbook exportTaskCompleteByExcel(IAdvancedQueryInput input);

	/**
	 * 用户处理任务
	 * 
	 * @param input 输入
	 */
	void userTaskComplete(UserTaskCompleteInput input);
	
	/**
	 * 查询流程图片
	 * @param input
	 * @return
	 */
	WorkflowImageOutput queryByWorkflowImage(WorkflowImageInput input);
	
	/**
	 * 查询流程列表
	 * @param input 输入
	 * @return
	 */
	List<WorkflowUserTaskCompleteOutput> queryByWorkflowList(WorkflowImageInput input);
	
}
